package Demo26;

import java.io.*;
import java.util.Scanner;

public class Demo26 {

    public static void main(String[] args) {

        //输入源文件路径和目标目录路径
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入想要复制的文件的路径(要输入文件后缀): ");
        String srcPath = scanner.next();
        System.out.println("请输入要复制到的目标目录(如果目标目录和原文件目录相同，文件名字必须不同): ");
        String destPath = scanner.next();

        //判断源文件是否存在
        File srcFile = new File(srcPath);
        if(!srcFile.isFile()) {
            System.out.println("该文件不存在！");
            return;
        }

        // 因为destPath最后包含了文件名，而我们所需要的只是前面的目录
        File destFile = new File(destPath);
        //得到用户输入的目标目录的父目录
        File parentFile = destFile.getParentFile();
        //判断得到的目标目录的父目录计算机中是否存在
        if(!parentFile.isDirectory()) {
            System.out.println("目标父目录不存在");
            return;
        }

        //进行拷贝
        copy(srcFile,destFile);
    }

    private static void copy(File srcFile, File destFile) {
        try(InputStream inputStream = new FileInputStream(srcFile);
            OutputStream outputStream = new FileOutputStream(destFile)) {

            while(true) {
                byte[] arr = new byte[1024];
                int len = inputStream.read(arr);
                if(len == -1) {
                    break;
                }
                outputStream.write(arr,0,len);
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}
